# from Cython.Build import cythonize
# import os
# from os.path import join as pjoin
# import numpy as np
# from distutils.core import setup
# from distutils.extension import Extension
# from Cython.Distutils import build_ext
#
# def find_in_path(name, path):
#     for dir in path.split(os.pathsep):
#         binpath = pjoin(dir, name)
#         if os.path.exists(binpath):
#             return os.path.abspath(binpath)
#     return None
#
# def locate_cuda():
#     # first check if the CUDAHOME env variable is in use
#     if 'CUDAHOME' in os.environ:
#         home = os.environ['CUDAHOME']
#         nvcc = pjoin(home, 'bin', 'nvcc')
#     else:
#         # otherwise, search the PATH for NVCC
#         default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin')
#         nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path)
#         if nvcc is None:
#             raise EnvironmentError('The nvcc binary could not be '
#                 'located in your $PATH. Either add it to your path, or set $CUDAHOME')
#         home = os.path.dirname(os.path.dirname(nvcc))
#
#     cudaconfig = {'home':home, 'nvcc':nvcc,
#                   'include': pjoin(home, 'include'),
#                   'lib64': pjoin(home, 'lib64')}
#     for k, v in cudaconfig.items():
#     #for k, v in cudaconfig.iteritems():
#         if not os.path.exists(v):
#             raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v))
#     return cudaconfig
#
# CUDA = locate_cuda()
#
#
# try:
#     numpy_include = np.get_include()
# except AttributeError:
#     numpy_include = np.get_numpy_include()
#
# def customize_compiler_for_nvcc(self):
#     self.src_extensions.append('.cu')
#     default_compiler_so = self.compiler_so
#     super = self._compile
#     def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
#         print(extra_postargs)
#         if os.path.splitext(src)[1] == '.cu':
#             # use the cuda for .cu files
#             self.set_executable('compiler_so', CUDA['nvcc'])
#             # use only a subset of the extra_postargs, which are 1-1 translated
#             # from the extra_compile_args in the Extension class
#             postargs = extra_postargs['nvcc']
#         else:
#             postargs = extra_postargs['gcc']
#
#         super(obj, src, ext, cc_args, postargs, pp_opts)
#         # reset the default compiler_so, which we might have changed for cuda
#         self.compiler_so = default_compiler_so
#     # inject our redefined _compile method into the class
#     self._compile = _compile
#
#
# # run the customize_compiler
# class custom_build_ext(build_ext):
#     def build_extensions(self):
#         customize_compiler_for_nvcc(self.compiler)
#         build_ext.build_extensions(self)
#
# ext_modules = [
#     Extension(
#         "utils.bbox",
#         ["bbox.pyx"],
#         extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]},
#         include_dirs = [numpy_include]
#     ),
#     Extension(
#         "utils.cython_nms",
#         ["cython_nms.pyx"],
#         extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]},
#         include_dirs = [numpy_include]
#     ),
#     Extension('utils.gpu_nms',
#         ['nms_kernel.cu', 'gpu_nms.pyx'],
#         library_dirs=[CUDA['lib64']],
#         libraries=['cudart'],
#         language='c++',
#         runtime_library_dirs=[CUDA['lib64']],
#         extra_compile_args={'gcc': ["-Wno-unused-function"],
#                             'nvcc': ['-arch=sm_35',
#                                      '--ptxas-options=-v',
#                                      '-c',
#                                      '--compiler-options',
#                                      "'-fPIC'"]},
#         include_dirs = [numpy_include, CUDA['include']]
#     ),
# ]
#
# setup(
#     ext_modules=ext_modules,
#     cmdclass={'build_ext': custom_build_ext},
# )
#

from Cython.Build import cythonize
import numpy as np
from distutils.core import setup
from distutils.extension import Extension

try:
    numpy_include = np.get_include()
except AttributeError:
    numpy_include = np.get_numpy_include()

ext_modules = [
    Extension(
        'bbox',
        sources=['bbox.c'],
        include_dirs = [numpy_include]
    ),
    Extension(
        'cython_nms',
        sources=['cython_nms.c'],
        include_dirs = [numpy_include]
    )
]
setup(
    ext_modules=ext_modules
)